package com.wthink.hzgj.service.jt808

import com.wthink.hzgj.busplan.`interface`.ListCallBack
import com.wthink.hzgj.busplan.data.BusPlan
import com.wthink.hzgj.util.DpUtil
import com.wthink.hzgj.util.readBCD
import com.wthink.hzgj.util.readString
import java.nio.ByteBuffer
import kotlin.properties.Delegates

/**
 * 行车计划响应
 */
class JT_8B07() : JT808Message() {

    lateinit var line: String //线路
    lateinit var yysj: String //营运时间
    lateinit var start: String //开始时间
    lateinit var end: String //结束时间
    lateinit var ccbh: String  //车次编号
    lateinit var clbh: String  //车辆编号
    var ywlx: Int = 0  //业务类型
    var ddlx: Int = 0  // 1:上行，2：下行，3：环行
    lateinit var startTime: String  //起始时间
    lateinit var endTime: String  //终止时间
    var startStationId: Int = 0//起始站点编号
    lateinit var startStationName: String//起始场站车站名称
    var endStationId: Int = 0//终止站点编号
    lateinit var endStationName: String//终止场站车站名称
    lateinit var fjnr: String // 附加内容
    lateinit var driverId: String  //驾驶员编号
    lateinit var driverName: String  //驾驶员名称
    lateinit var roadCard: String  //路牌
    lateinit var businessType: String  //路牌

    var isSelf :Boolean = false  //是否主动

    lateinit var date: String  //日期

    var queueSize: Int = 0

    var arrayList: ArrayList<BusPlan> = ArrayList()
    override fun readFromBytes(bytes: ByteArray) {
        val buf = ByteBuffer.wrap(bytes)

        yysj = buf.readBCD(3) //营运日期
        start = buf.readBCD(6) //开始时间
        end = buf.readBCD(6) //结束时间
        val size = buf.get() //发车排队个数
        queueSize = size.toInt()
        if (queueSize == 0) {
            return
        }

        for (index in 1..queueSize) {
            line = "${buf.int}"
            roadCard = buf.readString() //路牌
            ccbh = buf.readString() //车次编号
            clbh = buf.readString() //车辆编号
            ywlx = buf.get().toInt()
            ddlx = buf.get().toInt() //调度类型
            driverId = buf.readString() //驾驶员编号
            driverName = buf.readString() //驾驶员姓名
            buf.readString() //乘务员1编号
            val readString = buf.readString() //乘务员2编号
            businessType = when (readString) {
                "0" -> {
                    "未执行"
                }
                "1" -> {
                    "正在执行"
                }
                "2" -> {
                    "已执行"
                }
                else -> {
                    "未知"
                }
            }


            startTime = buf.readBCD(6) //起始时间
            endTime = buf.readBCD(6) //终止时间

            date = DpUtil.dateFormate(startTime)

            startStationId = buf.int //起始站点编号
            startStationName = buf.readString() //起始场站车站名称

            endStationId = buf.int //终止站点编号
            endStationName = buf.readString() //终止场站车站名称

            fjnr = "" //附加内容

            arrayList.add(BusPlan(line,roadCard,ccbh,clbh,ywlx,ddlx,driverId,driverName
                ,DpUtil.dayFormate(startTime),DpUtil.dayFormate(endTime)
                ,startStationId,startStationName,endStationId,endStationName,date,businessType))
        }
    }

    fun getList (): ArrayList<BusPlan> {
        return arrayList
    }

}